Some virtual machine platforms provide the capability to record the execution behavior of an instantiated virtual machine for replay at a later point in time. The recording is done by taking a snapshot of the complete state of the virtual machine at a certain point in time. The complete state of the virtual machine includes its entire memory, which can be multiple gigabytes in size, and its entire device state, including its hard disk drive, which can be hundreds of gigabytes in size.
One application of record and replay is debugging. The replay of a recorded session replicates any errors that arose during the original execution of an application. With this feature, an application end user can provide to the application vendor a recording that includes errors during the application's execution, and the application vendor can, in turn, replay the errors for debugging. However, the size of the recording's snapshot makes its storing and transporting difficult. Furthermore, the snapshot exposes to a recipient (in this case, the application vendor) all the data stored in the virtual machine's hard disk drive, including any sensitive database files and personal information. The security and privacy issues relating to the contents stored in a snapshot limits the ability to share such recordings between unrelated entities.